home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / crt / sun3.md / start.s < prev   
Text File  |  1991-09-26  |  2KB  |  49 lines

  1. |*
  2. |* start.s --
  3. |*
  4. |*    Header to set up argc, argv for main(), as well as set up environment
  5. |*      pointers for Unix routines.
  6. |*
  7. |* Copyright 1966, 1988 Regents of the University of California
  8. |* Permission to use, copy, modify, and distribute this
  9. |* software and its documentation for any purpose and without
  10. |* fee is hereby granted, provided that the above copyright
  11. |* notice appear in all copies.  The University of California
  12. |* makes no representations about the suitability of this
  13. |* software for any purpose.  It is provided "as is" without
  14. |* express or implied warranty.
  15. |*
  16.  
  17.     .data
  18.     .asciz "$Header: /sprite/src/lib/c/crt/sun3.md/RCS/start.s,v 1.3 88/11/13 16:17:59 ouster Exp $ SPRITE (Berkeley)"
  19.     .even
  20.     .globl    _environ
  21. _environ:
  22.     .long 0
  23.  
  24.     .text
  25.     .long    0
  26.     trap    #15        | Processes starting off in debug mode will
  27.                 |     start here.
  28.     .globl    start
  29. start:
  30.     movl    sp@,d2        | argc
  31.     lea        sp@(4),a3    | argv
  32.     movl    d2, d0        | pass argc + 1 as one param 
  33.     addql    #1, d0          |      to lmult
  34.     movl    #4, d1        | want 4 * (argc + 1)
  35.     jsr      lmult        | 
  36.     movl        a3, d1        | take argv and ... 
  37.     addl        d0, d1        | ... go past it by (argc + 1) 4-byte fields
  38.     movl    d1,_environ    | set the global _environ variable
  39.     movl    d1,sp@-        | push envp
  40.     movl    a3,sp@-        | push argv
  41.     movl    d2,sp@-        | push argc
  42.     lea        0,a6        | stack frame link 0 in main -- for dbx
  43.     jsr        _main        | main(argc, argv, envp)
  44.     addw    #12,sp
  45.     movl    d0,sp@-
  46.     jsr        _exit        | exit( ... )
  47.     addql    #4,sp
  48.     rts
  49.